package com.bd.scm.dao.mapper.numberOfRuns;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bd.scm.domain.dto.numberOfRuns.ZtBanCiDto;
import com.bd.scm.domain.models.numberOfRuns.ZtBanCi;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/** 班次 Mapper
 * @ClassName ZtBanCiMapper
 * @Description TODO
 * @Author YH
 * @Date 2019/12/9 0009 10:04
 * @Version 1.0
 **/
public interface ZtBanCiMapper  extends BaseMapper<ZtBanCi> {

    /**
     * 查询所有的班次
     * @param page 分页信息
     * @param ztBanCiDto 查询条件
     * @return
     */
    IPage<ZtBanCiDto> findZtBanCiList(Page<ZtBanCiDto> page, ZtBanCiDto ztBanCiDto);

    /**
     * 修改班次
     * @param ztBanCiDto bh mc fh
     * @return
     */
    int updateZtBanCi(ZtBanCiDto ztBanCiDto);

    /**
     * 添加班次
     * @param ztBanCiDto mc fh
     * @return
     */
    int insertZtBanCi(ZtBanCiDto ztBanCiDto);

    /**
     * 删除班次  逻辑删除  修改是否删除字段为1
     * @param ztBanCiDto bh
     * @return
     */
    int deleteZtBanCi(ZtBanCiDto ztBanCiDto);

    /**
     * 判断班次是否与部门绑定
     * @param ztBanCiDto
     * @return
     */
    int findBanciDepartmentConfigCount(ZtBanCiDto ztBanCiDto);

    /**
     * 判断班次是否与规律班次绑定
     * @param ztBanCiDto
     * @return
     */
    int findBanciGlbcConfigCount(ZtBanCiDto ztBanCiDto);

    /**
     * 判断班次是否与时段绑定
     * @param ztBanCiDto
     * @return
     */
    int findBanciTimeConfigCount(ZtBanCiDto ztBanCiDto);

    /**
     * 删除字段 bd_banci_department_query
     * @param id 班次ID
     */
    void dropBdBanciDepartmentQuery(@Param("id") Integer id);

    /**
     * 删除数据 bd_sys_proc_desc
     * @param id 班次ID
     */
    void deleteBdSysProcDesc(@Param("id")Integer id);

    /**
     * 获取班次最大ID
     * @return
     */
    int getMaxBanciID();

    /**
     * 添加bd_banci_department_query字段
     * @param id 班次ID
     */
    void addBdBanciDepartmentQueryColumn(@Param("id")Integer id);

    /**
     * 修改 bd_sys_proc_desc
     * @param ztBanCiDto id 班次ID mc 名称
     * @return
     */
    void updateBdSysProcDesc(ZtBanCiDto ztBanCiDto);

    /**
     * 设置添加bd_banci_department_query字段默认值 false
     * @param id 班次ID
     */
    void updateBdBanciDepartmentQueryColumn(@Param("id")Integer id);

    /**
     * 获取最大序号+1
     * @return
     */
    int getMaxPropId();

    /**
     * 添加数据 bd_sys_proc_desc
     * @param object id , propId , banciName ,banciID
     */
    void insertBdSysProcDesc(@Param("object") JSONObject object);
}
